#include "ThreadPoolSingle.hpp"
#include "Task.hpp"
using namespace ThreadPoolModule;

int main()
{
    ThreadPool<task_t> *inc = ThreadPool<task_t>::GetObject();
    for (int i = 0; i < 5; i++)
    {
        inc->Equeue(Download);
    }
    sleep(3);
    inc->Stop();
    sleep(2);
    inc->Join();

    // ThreadPool<task_t> tp(5);
    // tp.Start();

    // for (int i = 0; i < 5; i++)
    // {
    //     tp.Equeue(Download);
    // }

    // sleep(5);

    // sleep(1);

    // tp.Stop();
    // tp.Join();
    // 测试日志文件的刷新
    // // 文件刷新
    // Enable_File_LogStrategy();
    // LOG(LogLevel::DEBUG) << "调试" << 1;
    // LOG(LogLevel::ERROR) << "错误" << 2;
    // LOG(LogLevel::WARNING) << "警告" << 3;

    // Logger logger;
    // logger.EnableFileLogStrategy();
    // logger(LogLevel::DEBUG, "test1.cc", 1) << 1;
    // logger(LogLevel::WARNING, "test2.cc", 2) << 2;
    // logger(LogLevel::ERROR, "test3.cc", 3) << 3;

    // 测试刷新策略
    // unique_ptr<LogStrategy> Strategy = make_unique<FileLogStrategy>();
    // unique_ptr<LogStrategy> Strategy = make_unique<ConsoleLogStrategy>();
    // Strategy->SyncLog("你好世界");
    // ConsoleLogStrategy Cstrategy;
    // FileLogStrategy Fstrategy;
    // LogStrategy *Strategy = &Fstrategy;
    // Strategy->SyncLog("你好世界");
}